Skip to content

hermes-agent: restore packaged-install parity - #297394

Open
dot-agi wants to merge 1 commit into
Homebrew:mainfrom
dot-agi:hermes-agent-nix-parity
Open

hermes-agent: restore packaged-install parity#297394
dot-agi wants to merge 1 commit into
Homebrew:mainfrom
dot-agi:hermes-agent-nix-parity

Conversation

@dot-agi

@dot-agi dot-agi commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

  • Have you followed the guidelines for contributing?
  • Have you ensured that your commits follow the commit style guide?
  • Have you checked that there aren't other open pull requests for the same formula update/change?
  • Have you built your formula locally with HOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source <formula>?
  • Is your test running fine brew test <formula>?
  • Does your build pass brew audit --strict <formula> (after doing HOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source <formula>)? If this is a new formula, does it pass brew audit --new <formula>?

  • I did not use AI/LLM to create this PR, or I disclosed the tool/model below and reviewed its output; I did not attribute commits to AI and will answer maintainer questions and review comments myself without AI/LLM.

AI-assisted contribution by Claude Code (Claude Fable 5, model claude-fable-5) for ~95% of the work (upstream packaging research, formula change, and running the validation). Build, test and audit were executed by the AI on the contributor's machine; the contributor reviewed the design, the diff and this description.

Built and tested locally on macOS 26 (Tahoe) running arm64, and on Linux arm64 from source in the homebrew/brew Docker container.

Draft until #297327 lands — the first commit here is that PR's; this branch will be rebased exactly once after it merges, before being marked ready.

Restores packaged-install parity with upstream's own Nix packaging (nix/hermes-agent.nix — the env-var wrapper interface upstream kept for packaged installs after removing brew/PyPI as channels in NousResearch/hermes-agent#68217). Today's brew install ships no bundled skills/plugins/locales, no web dashboard, no TUI, and hermes self-downloads node/ripgrep into ~/.hermes (and tirith from GitHub releases) at runtime.

What this change does:

  • Ships the bundled data dirs (skills, optional-skills, plugins, locales, optional-mcps) into pkgshare, pruned like Nix's source filters.
  • Builds the web dashboard (web/, vite) and TUI (ui-tui/, esbuild) with npm at build time — same as upstream's nix/web.nix / nix/tui.nix. First npm-registry access for this formula; bottles grow roughly 25 MB.
  • Wraps hermes, hermes-agent, hermes-acp with the same ten HERMES_* env vars the Nix wrapper sets.
  • Adds node, ripgrep, tirith as runtime deps, replacing the runtime self-downloads; hermes doctor flips ripgrep/Node to ✓. ffmpeg stays optional via caveats. (node rather than node@22: upstream pins for reproducibility, not compatibility; node@22 is the fallback if CI disagrees.)
  • revision 1 so bottles rebuild with the new payload.

Test rationale: assert_match "bundled", shell_output("#{bin}/hermes plugins list") exercises the wrapper env mechanism directly and discriminates: via the bare venv entry point it matches 0 times; via the wrapper, 89. (skills list couldn't be used — bundled-skill seeding only runs in interactive setup/update flows, not under brew test's isolated $HOME.)

@github-actions github-actions Bot added autosquash Automatically squash pull request commits according to Homebrew style. nodejs Node or npm use is a significant feature of the PR or issue python Python use is a significant feature of the PR or issue rust Rust use is a significant feature of the PR or issue labels Aug 6, 2026
Mirror upstream's nix/hermes-agent.nix packaging (the interface upstream
kept for packaged installs): ship the bundled data dirs (skills,
optional-skills, plugins, locales, optional-mcps), build the web
dashboard and TUI bundles with npm like nix/web.nix and nix/tui.nix do,
and wrap the entry points with the HERMES_* env vars. Add node, ripgrep
and tirith as runtime dependencies to replace hermes-agent's runtime
self-downloads into ~/.hermes; ffmpeg stays optional via caveats.
Without this, a brew install has no builtin skills, no dashboard, no
TUI, and downloads node/ripgrep/tirith at runtime.
@dot-agi
dot-agi force-pushed the hermes-agent-nix-parity branch from 7ef6eed to 807a871 Compare August 6, 2026 16:40
@dot-agi dot-agi closed this Aug 7, 2026
@dot-agi dot-agi reopened this Aug 7, 2026
@github-actions github-actions Bot removed the autosquash Automatically squash pull request commits according to Homebrew style. label Aug 7, 2026
@dot-agi dot-agi closed this Aug 7, 2026
@dot-agi dot-agi reopened this Aug 7, 2026
@dot-agi
dot-agi marked this pull request as ready for review August 7, 2026 02:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

nodejs Node or npm use is a significant feature of the PR or issue python Python use is a significant feature of the PR or issue rust Rust use is a significant feature of the PR or issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant